home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / TIPS / SWTIP / README.SWT < prev    next >
Text File  |  1994-07-02  |  10KB  |  257 lines

  1. July 1994       Paul R. Santa-Maria (CIS 71674,422; GEnie PAUL.RSM)
  2.  
  3. This archive contains the source code from the book "Software Tools in 
  4. Pascal" by Brian W. Kernighan and P.J. Plauger, Addison-Wesley, 1981.
  5.  
  6. I have adapted and tested it for MS-DOS and Borland's Turbo Pascal 7 
  7. (TP7).  Please inform me of any typographical errors you may find.
  8.  
  9.  
  10.  
  11.         Instructions:
  12.  
  13. There are three files present:
  14.  
  15.         README.SWT      this file
  16.         SWTIP           text file with all source files concatinated
  17.         INCLUDE.EXE     executable for MS-DOS from the book
  18.  
  19. To extract all the files from SWTIP, compile and run UNCONCAT:
  20.  
  21. ------------------ begin UNCONCAT.PAS --------------------------
  22. program UNCONCAT;
  23. {
  24.   Extract files from SWTIP:
  25.         open input file
  26.         open output file
  27.         while not end of input file
  28.                 read line from input
  29.                 if new file then
  30.                         close old output file
  31.                         open new input file
  32.                 else
  33.                         write line to output
  34.                 end if
  35.         end while
  36.         close input file
  37.         close output file
  38. }
  39. var
  40.   IN_FILE, OUT_FILE : Text;
  41.   LINE : String[100];
  42.   INDEX : Integer;
  43.  
  44. begin
  45.   Assign(IN_FILE, 'SWTIP');
  46.   Reset(IN_FILE);
  47.  
  48.   Assign(OUT_FILE, '');
  49.   Rewrite(OUT_FILE);
  50.  
  51.   while (not Eof(IN_FILE)) do
  52.     begin
  53.       ReadLn(IN_FILE, LINE);
  54.       if ((LINE[1] = '{') and
  55.           (LINE[2] = '!')) then
  56.         begin
  57.           Close(OUT_FILE);
  58.           for INDEX := 1 to Length(LINE)-2 do
  59.             LINE[INDEX] := LINE[INDEX+2];
  60.           LINE[0] := Chr(Ord(LINE[0])-4);
  61.           Assign(OUT_FILE, LINE);
  62.           Rewrite(OUT_FILE);
  63.           Writeln;
  64.           Write(LINE, ' ');
  65.         end
  66.       else
  67.         begin
  68.           WriteLn(OUT_FILE, LINE);
  69.           Write('.');
  70.         end;
  71.     end;
  72.  
  73.   Close(IN_FILE);
  74.   Close(OUT_FILE);
  75. end.
  76. ------------------ end UNCONCAT.PAS ----------------------------
  77.  
  78. There are several types of files in SWTIP.  Most of them are *.P that 
  79. are directly from the book.  Fewer of them are *.I files which are the 
  80. master include files for each program in the book.  There is one *.PAS 
  81. file that is a complete program listed in the book.  Finally, there is 
  82. a COMPILER.INC file which contains all the compiler switches for the 
  83. programs.  If you are not using an MS-DOS computer, you can break out 
  84. the routines by hand using a text editor.  Each file is marked with a 
  85. {!filename.ext!} tag.
  86.  
  87. To recreate the sources for all the programs, run the INCL.BAT file:
  88.  
  89. ------------------ begin INCL.BAT ------------------------------
  90. INCLUDE < GLOBDEFS.I > GLOBDEFS.PAS
  91. INCLUDE < PRIMS.I    > PRIMS.PAS
  92. INCLUDE < UTILITY.I  > UTILITY.PAS
  93. INCLUDE < CHARCNT.I  > CHARCNT.PAS
  94. INCLUDE < LINECNT.I  > LINECNT.PAS
  95. INCLUDE < WORDCNT.I  > WORDCNT.PAS
  96. INCLUDE < DETAB.I    > DETAB.PAS
  97. INCLUDE < ENTAB.I    > ENTAB.PAS
  98. INCLUDE < OVERSTRK.I > OVERSTRK.PAS
  99. INCLUDE < COMPRESS.I > COMPRESS.PAS
  100. INCLUDE < EXPAND.I   > EXPAND.PAS
  101. INCLUDE < ECHOZ.I    > ECHOZ.PAS
  102. INCLUDE < TRANSLIT.I > TRANSLIT.PAS
  103. INCLUDE < COMPARE.I  > COMPARE.PAS
  104. INCLUDE < INCLUDEZ.I > INCLUDEZ.PAS
  105. INCLUDE < CONCAT.I   > CONCAT.PAS
  106. INCLUDE < PRINTZ.I   > PRINTZ.PAS
  107. INCLUDE < MAKECOPY.I > MAKECOPY.PAS
  108. INCLUDE < ARCHIVE.I  > ARCHIVE.PAS
  109. INCLUDE < SORTZ.I    > SORTZ.PAS
  110. INCLUDE < UNIQUE.I   > UNIQUE.PAS
  111. INCLUDE < KWIC.I     > KWIC.PAS
  112. INCLUDE < UNROTATE.I > UNROTATE.PAS
  113. INCLUDE < FINDZ.I    > FINDZ.PAS
  114. INCLUDE < CHANGE.I   > CHANGE.PAS
  115. INCLUDE < EDIT1.I    > EDIT1.PAS
  116. INCLUDE < EDIT2.I    > EDIT2.PAS
  117. INCLUDE < FORMATZ.I  > FORMATZ.PAS
  118. INCLUDE < DEFINE.I   > DEFINE.PAS
  119. INCLUDE < MACRO.I    > MACRO.PAS
  120. ------------------ end INCL.BAT --------------------------------
  121.  
  122. Although you can use the INCLUDE command on any file in SWTIP, only 
  123. the *.I files are set up to be complete and compilable programs.
  124.  
  125.         Book errata:
  126.  
  127. 'fsize.p' is needed but missing in 'archproc.p' (page 104).
  128.  
  129. 'edprim.p' is missing yet used in 'editproc.p' (page 216).
  130.  
  131. 'editvar.p' is implied but shown as part of 'edittype.p' (page 220).
  132.  
  133. 'editvar.p' (see above) is missing vars shown in 'editvar.p' (page 216)
  134.  
  135. 'seek.p' must be included in 'gettxt.p' (pages 220, 221).
  136.  
  137. 'macproc.p' is needed but missing in 'macro.p' (page 289)
  138.  
  139. 'islower.p' is missing yet used in 'utility.p' (page 323).
  140.  
  141.         Miscellaneous:
  142.  
  143. The primitives are based on the UCB versions from the Appendix, but 
  144. they have been modified for TP7.
  145.  
  146. Type CHARACTER is changed from -1..127 to Byte.  TP7 required this 
  147. because the ISxxxx functions used sets and and passing ENDFILE (-1) to 
  148. these functions caused the program to abort.  I had to change both 
  149. ENDFILE (globdefs.p) and DITTO (findcons.p and editcons.p) from -1 to 
  150. 255.
  151.  
  152. Where name collisions occurred between the book and TP7 or MS-DOS, I 
  153. added a suffix 'z' to the name.  For example, 'string' became 
  154. 'stringz'.
  155.  
  156. 'globdefs' (page 325) defines ESCAPE = ATSIGN { @ } and this 
  157. definition is used in the routines 'esc' and 'dodash'.  To avoid
  158. confusion with the ASCII character ESCAPE I removed the definition
  159. from 'globdefs' and added it back in as a constant in 'esc' and
  160. 'dodash'.
  161.  
  162. I changed all hard-coded constants from the form DQUOTE = 34 to the 
  163. form DQUOTE = ORD('"') and I removed the constants for the lower case 
  164. letters.
  165.  
  166. 'settabs' (page 25) uses a tab size of 4.  I changed it to 8.
  167.  
  168. I formatted the TP7 version with PF from Turbo Power's Turbo Analyst 
  169. to make all listings conform to a single layout standard in regards to 
  170. indentation and capitalization.  The options for PF I used were '/C 33 
  171. /K+ /L+ /RL /SM /VU'.  Information on Turbo Analyst can be found on 
  172. CompuServe's PCVENB forum, section 6.
  173.  
  174. I found the source code to the book on CompuServe's OS9 forum archived 
  175. using an OS9 compressor.  I thank Ernest Withers Jr. (CIS 71545,1117) 
  176. who was kind enough to repackage it for MS-DOS for me.  Following is 
  177. the original README file for that version; I preserved it even though 
  178. it is now obsolete.
  179.  
  180.  
  181.         README.V30 file from original archive on OS9 forum:
  182.  
  183. {readme.v30}
  184.  
  185. TURBTOOL.LBR DOCUMENTATION
  186.  
  187. This library contains the source from the book
  188. "Software Tools in Pascal" by B.W. Kernighan and
  189. P.J. Plauger, Addison-Wesley. It has been adapted
  190. for Turbo Pascal.
  191.  
  192. How to Implement:
  193.  
  194.   Compile SHELL.PAS with the CMD option
  195.   Execute SHELL
  196.  
  197. Accepts redirection, but not pipes.
  198. Bill McGee, 613-828-9130
  199.  
  200. Notes: The version using TURBO is fast enough to make
  201. this a useful set of tools for file manipulation.
  202.  
  203.           ------Further Modifications------
  204.  
  205. The primitives in this version are basically the UCSD Pascal versions
  206. presented in the book, with modifications for Turbo Pascal.
  207.  
  208. This version has been modified for use under Turbo Pascal v. 3.0
  209. under CP/M-86.  There are no system dependent statements in the code
  210. to the best of my knowledge, so it should work under MS-DOS as well.
  211.  
  212. The original version (typed in by Bill McGee) was set up for CP/M-80 and
  213. used the CHAIN capability of Turbo Pascal.  I have eliminated that
  214. feature in favor of using INCLUDE files.  There is not enough memory
  215. available in a CP/M-80 system for this version, but one could modify
  216. the include file list to eliminate unwanted features or to make more
  217. than one version, (e.g. break out EDIT, FORMAT, and DEFINE).
  218.  
  219. There was really only one change required to the McGee's original to get
  220. it to work with version 3.0.  A readln(TRM) had to be added in the
  221. subroutine GETKBD.  The change to CP/M-86 required replacing all calls
  222. to the procedure BDOS(0,0) with HALT.  This change works with the CP/M-80
  223. version of Turbo Pascal v. 3.0 as well.  Thus, as anyone can see, all of
  224. the hard work was done by Bill.
  225.  
  226. (Adaption to version 3.0 of Turbo Pascal by Jim Potter, (505) 662-5804.)
  227.  
  228. Please note that this is copyright software.  The following notice has
  229. been included with each file and should not be removed.
  230.  
  231. +-------------------------------------------------------------------------+
  232. |       Copyright (c) 1981                                                |
  233. |       By:     Bell Telephone Laboratories, Inc. and                     |
  234. |               Whitesmith's Ltd.,                                        |
  235. |                                                                         |
  236. |       This software is derived from the book                            |
  237. |               "Software Tools in Pascal", by                            |
  238. |               Brian W. Kernighan and P. J. Plauger                      |
  239. |               Addison-Wesley, 1981                                      |
  240. |               ISBN 0-201-10342-7                                        |
  241. |                                                                         |
  242. |       Right is hereby granted to freely distribute or duplicate this    |
  243. |       software, providing distribution or duplication is not for profit |
  244. |       or other commercial gain and that this copyright notice remains   |
  245. |       intact.                                                           |
  246. +-------------------------------------------------------------------------+
  247.  
  248. ===========================================================================
  249.  
  250. Title:  "Software Tools in Pascal" source code
  251.  
  252. Keys:   SOFTWARE TOOLS PASCAL BOOK SOURCE KERNIGHAN PLAUGER
  253.  
  254. This archive contains the source code from the book "Software Tools in 
  255. Pascal" by Brian W. Kernighan and P.J. Plauger, Addison-Wesley, 1981.  
  256. It has been adapted for MS-DOS and Borland's Turbo Pascal 7.0.
  257.